package com.cmict.data.infra.service.consult;

import java.util.*;
import javax.validation.*;
import com.cmict.data.infra.controller.admin.consult.vo.*;
import com.cmict.data.infra.dal.dataobject.consult.ConsultDO;
import com.cmict.data.framework.common.pojo.PageResult;

/**
 * 咨询管理 Service 接口
 *
 * @author 系统管理员
 */
public interface ConsultService {

    /**
     * 创建咨询管理
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    Long createConsult(@Valid ConsultCreateReqVO createReqVO);

    /**
     * 更新咨询管理
     *
     * @param updateReqVO 更新信息
     */
    void updateConsult(@Valid ConsultUpdateReqVO updateReqVO);

    /**
     * 删除咨询管理
     *
     * @param id 编号
     */
    void deleteConsult(Long id);

    /**
     * 获得咨询管理
     *
     * @param id 编号
     * @return 咨询管理
     */
    ConsultDO getConsult(Long id);

    /**
     * 获得咨询管理列表
     *
     * @param ids 编号
     * @return 咨询管理列表
     */
    List<ConsultDO> getConsultList(Collection<Long> ids);

    /**
     * 获得咨询管理分页
     *
     * @param pageReqVO 分页查询
     * @return 咨询管理分页
     */
    PageResult<ConsultDO> getConsultPage(ConsultPageReqVO pageReqVO);

    /**
     * 获得咨询管理列表, 用于 Excel 导出
     *
     * @param exportReqVO 查询条件
     * @return 咨询管理列表
     */
    List<ConsultDO> getConsultList(ConsultExportReqVO exportReqVO);

    void batchDelete(Collection<Long> ids);

    /**
     * 获得咨询管理列表(下拉框用)
     *
     * @param issueTitle
     * @return 咨询管理列表
     */
    List<ConsultDO> selectListChoose(String issueTitle,Long id);
}
